package cn.luoshaocheng.basic.controller;

import cn.luoshaocheng.basic.util.FastDfsUtils;
import cn.luoshaocheng.basic.util.jsonResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 上传
 * 下载 = 不需要
 * 查看 = 路径
 * 删除
 * 更新 = 删除 + 上传
 */


@RestController
@RequestMapping("/fastdfs")
public class FastDfsController {
    //上传的接口
    /*
    name 上传的文件字段名	string【类型】	—	file【默认值】
    RequestPart 接收的是文件【文件上传必须使用这个注解】
    value = "file"中file对应的是MultipartFile file
    required = true  必须上传一张图片
    */
    @PostMapping
    public jsonResult upload(@RequestPart(required = true, value = "file") MultipartFile file) {
        try {
            //上传成功
            /*
            file.getBytes()
            获取文件名字，再截取后缀
             */
            //获取原始文件名字getOriginalFilename
            String originalFilename = file.getOriginalFilename();
            //截取后缀  不+1的话就截取的是带.的后缀，我们需要的是不带.的后缀
            String substring = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            //上传成功的path路径【调用工具类中的upload方法是】【需要将path传递给前端】
            String path = FastDfsUtils.upload(file.getBytes(), substring);
            //把上传后的路径返回回去【把path设置给jsonResult中的ResultObj属性】【】
            return jsonResult.me().setResultObj(path);
        } catch (Exception e) {
            e.printStackTrace();
            //上传失败
            return jsonResult.me().setMsg("上传失败，请重新上传");
        }
    }
    //删除的接口
    /*
    @RequestParam[通过这个注解获取到KV键值对的值]  【path=" + filePath】
    value = "file"中file对应的是String path的path
    required = true  必须上传一张图片
     */
    @DeleteMapping
    public jsonResult delete(@RequestParam(required = true,value = "path") String path){
       /*
       url: "/common/fastDfs/?path=" + filePath【获取到path路径就可以进行删除】
       */
        try {
            //调用工具类中的Delete方法【public static void delete(String groupName, String fileName)】
            String pathTmp = path.substring(1); // goup1/xxxxx/yyyy
            String groupName =  pathTmp.substring(0, pathTmp.indexOf("/")); // goup1
            String remotePath = pathTmp.substring(pathTmp.indexOf("/")+1);// xxxxx/yyyy
            FastDfsUtils.delete(groupName,remotePath);
            return jsonResult.me().setResultObj("删除成功");
        } catch (Exception e) {
            e.printStackTrace();
            //上传失败
            return jsonResult.me().setMsg("删除失败，请重新上传");
        }
    }


}

